/**
 * 
 */
package io;

import general.Page;

import java.io.File;
import java.io.IOException;
import java.net.MalformedURLException;
import java.net.URL;
import java.net.URLConnection;
import java.util.Vector;

/**
 * Classe proposant les outils de lecture des fichier locaux
 * @author remi
 *@version 1.0
 */
public class ImporterFichierHTML {


	/**
	 * fonction permettant de lire le type MIME d'un fichier <br> note : il faudrait eventuellement utiliser la fonction guessContentTypeFromStream
	 * @param file le fichier dont on veut connaitre le type
	 * @return le type MIME du fichier
	 */
	public static String getMIMEType(File file){
	   if(file.isDirectory()){return "repertoire";}
	   if(!file.exists()){return "fichier inexistant";}
	   try{
	      URL url = file.toURI().toURL();
	      URLConnection connection = url.openConnection();
	      return connection.getContentType(); //eventuellement, utiliser guessContentTypeFromStream pour plus de sureté
	   }catch(MalformedURLException mue){
	      return mue.getMessage();
	   }catch(IOException ioe){
	      return ioe.getMessage();
	      }
	}
	
	

	/**
	 * Fonction permettant de creer un vecteur de pages correspondantes à toutes les pages html d'un repertoire et de son arborescence
	 * @param repertoire le repertoire racine a parti duquel les fichiers html vont être récupéré
	 * @param pages le vecteur auquel vont être ajouté les nouvelles pages
	 */
	public static void creerPagesAPartirDunRepertoire ( File repertoire, Vector<Page> pages ) {
		//System.out.println ( repertoire.getAbsolutePath());

		if ( repertoire.isDirectory() && repertoire.isHidden()==false ) {
			File[] list = repertoire.listFiles();
			if (list != null){
				for ( int i = 0; i < list.length; i++) {
					// Appel récursif sur les sous-répertoires
					String type = getMIMEType(list[i]);
					if(type.contains("html")==true){
						System.out.println(list[i].getAbsolutePath() + " est un fichier html " );
						
						//remplissage du vecteur de pages
						pages.add(new Page(list[i]));
						
					}
					creerPagesAPartirDunRepertoire( list[i], pages);
				} 
			} else {
				System.err.println(repertoire + " : Erreur de lecture.");
			}
		} else{// cas ou le fichier d'entré n'est pas un repertoire : erreur
			

		}

	} 
	public static File nomRepertoireToFile(String nomDuRepertoire){
		
		File repertoire;
		try {
			repertoire = new File(nomDuRepertoire);
		} catch (NullPointerException e) {
			System.err.println("erreur, vous essayez de creer un fichier a partir d'un nom de fichier vide");
			repertoire = new File("erreur.html");
			e.printStackTrace();
			
		}
		
		// TODO nomRepertoireToFile : gestion des exceptions et des erreurs
		return repertoire;
	}



	/**main de test
	 * @param args argumetn du main de test
	 */
	public static void main(String[] args) {
		// TODO LectureFichhierHTML main : a remplir
		File repertoire = new File("inputHTML"); 
		Vector<Page> pages = new Vector<Page>();
		creerPagesAPartirDunRepertoire(repertoire, pages);
		
		System.err.println("\n\n\n");
		for(int i=0;i<pages.size();i++){
		System.err.println("voici le chemin de la page : " + pages.get(i).getUrlLocal());
		
		}

	}

}
